<?php

Yii::import('application.modules.ninio.models._base.BasePatologias');

/**
 * Modelo heredado (BasePatologias)
 */
class Patologias extends BasePatologias {

    /**
     * @return Patologias
     */
    public $institucion;
    public $nombreCompletoInfante;

    public static function model($className = __CLASS__) {
        return parent::model($className);
    }

    /**
     * Pluraliza el nombre del modelo segun el  $n
     * @param int $n
     * @return string
     */
    public static function label($n = 1) {
        return Yii::t('app', 'H&aacute;bito Alimenticio|H&aacute;bitos Alimenticios', $n);
    }

    public function rules() {
        return array(
            array('ninios_id', 'required'),
            array('ninios_id', 'numerical', 'integerOnly' => true),
            array('pregunta1, pregunta2, pregunta3, pregunta4', 'length', 'max' => 45),
            array('pregunta1, pregunta2, pregunta3, pregunta4', 'default', 'setOnEmpty' => true, 'value' => null),
            array('id, ninios_id, pregunta1, pregunta2, pregunta3, pregunta4, institucion, nombreCompletoInfante', 'safe', 'on' => 'search'),
        );
    }

    /**
     * Modifica los nombres de las columnas de la tabla y atributos del modelo
     * @return array customized attribute labels (name=>label)
     */
    public function attributeLabels() {
        return array(
            'id' => Yii::t('app', 'ID'),
            'ninios_id' => Yii::t('app', 'Niños'),
            'pregunta1' => Yii::t('app', '1. ¿Qué alimentos le gusta consumir?'),
            'pregunta2' => Yii::t('app', '2. ¿Qué alimentos le desagrada consumir?'),
            'pregunta3' => Yii::t('app', '3. ¿Tiene alguna alergia alimentaria?'),
            'pregunta4' => Yii::t('app', '4. ¿Consume algun tipo de suplemento vitaminico o/y mineral?'),
            'checkedDadosAlta' => Yii::t('app', 'Ver Infantes Dados de Baja'),
            'nombreCompletoInfante' => Yii::t('app', 'Nombre Completo'),
        );
    }

    /**
     * Busca si la tabla del modelo no esta vacia
     * @author Sofia Mejia <asmejia@utn.edu.ec>
     * @return query
     */
    public function contarDatos() {
        $command = Yii::app()->db->createCommand()
                ->select("count(id) as total")
                ->from($this->tableName());
        $result = $command->queryAll();
        return $result[0]['total'];
    }

    /**
     * Busca los datos antropomorficos de los niños pertenecientes a una institucion
     * @author Mauricio Chamorro <mrchamorro@utn.edu.ec>
     * @param int $pa_id id de la patologia
     * @return \DatosAntropomorficos
     */
    public function de_institucion($pa_id = null) {
        $modelCruge = InstitucionCrugeUser::model()->de_usuario()->findAll();
        $this->getDbCriteria()->mergeWith(
                array(
                    'join' => 'LEFT JOIN ninios ni ON ni.id = t.ninios_id',
                    'condition' => 'ni.institucion_id=:institucion_id',
                    'params' => array(':institucion_id' => $modelCruge[0]['oldValues']['institucion_id'],
                    )
                )
        );
        if ($pa_id != null) {
            $this->getDbCriteria()->mergeWith(
                    array(
                        'condition' => 't.id=:pa_id',
                        'params' => array(':pa_id' => $pa_id,
                        )
                    )
            );
        }

        return $this;
    }

    /**
     * Busca si ya existe una patologia registrada para el ninio
     * @param int $ninio_id seleccionado
     * @author Sofia Mejia <asmejia@utn.edu.ec>
     * @return \Patologias
     */
    public function validarPatologiaUnica($ninio_id) {
        $this->getDbCriteria()->mergeWith(
                array(
                    'condition' => 't.ninios_id=:ni_id',
                    'params' => array(':ni_id' => $ninio_id,
                    )
                )
        );

        return $this;
    }

    public function search() {
        $criteria = new CDbCriteria;
        $criteria->join .= 'inner join ninios on ninios.id = t.ninios_id ';
        $criteria->join .= 'inner join institucion on institucion.id = ninios.institucion_id ';
        $criteria->compare('id', $this->id);
        $criteria->compare('ninios_id', $this->ninios_id);
        $criteria->compare('pregunta1', $this->pregunta1, true);
        $criteria->compare('pregunta2', $this->pregunta2, true);
        $criteria->compare('pregunta3', $this->pregunta3, true);
        $criteria->compare('pregunta4', $this->pregunta4, true);
        $criteria->compare('institucion.id', $this->institucion, false);
        $criteria->compare('CONCAT(IFNULL(CONCAT(ninios.nombres," "),""),IFNULL(ninios.apellidos,""))', $this->nombreCompletoInfante, true, 'or');



        return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
        ));
    }
    
    /**
     * Criteria para buscar infantes que no estan dados de baja
     * @author Mauricio Chamorro <mrchamorro@utn.edu.ec> 
     * @return \DatosAntropomorficos
     */
    public function sin_FechaSalida() {
        $this->getDbCriteria()->mergeWith(
                array(
                    'condition' => 'ninios.fecha_salida IS NULL',
                )
        );
        return $this;
    }

    /**
     * Criteria para buscar infantes que ya han sido dados de baja
     * @author Mauricio Chamorro <mrchamorro@utn.edu.ec> 
     * @return \DatosAntropomorficos
     */
    public function con_FechaSalida() {
        $this->getDbCriteria()->mergeWith(
                array(
                    'condition' => 'ninios.fecha_salida IS NOT NULL',
                )
        );
        return $this;
    }

    public function scopes() {
        return array(
            'limitcincuenta' => array(
                'limit' => 50,
            ),
            'conFechaSalida' => array(
                'condition' => 'ninios.fecha_salida  IS NOT NULL',
            ),
            'sinFechaSalida' => array(
                'condition' => 'ninios.fecha_salida  IS NULL',
            ),
        );
    }


}
